function bar() {
    console.log(myname);
}
function foo() {
    var myname = '点点';
    bar();
}
var myname = '发发';
foo()

// 先在全局执行上下文中myname = undefined, bar(), foo()
// 在进行执行, myname = '发发', foo()
// 编译创建foo()执行上下文
// myname = undefined
// 执行myname='点点',bar()
// 编译创建bar()执行上下文
// 输出myname，bar内没有，则跳出到外层作用域找（也就是声明的位置），也就是myname = '发发'